//
//  ViewController.m
//  01 Thread
//
//  Created by Yi Deng on 15-3-25.
//  Copyright (c) 2015年 iphonetrain. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
//    NSLog(@"0.thread = %@", [NSThread currentThread]);
    
    
    
    int i=0;
    
    
    
    // 这是方法调用，并非开启新的线程
//    [self thread];
    
    // ----------------------- 1. NSThread ------------------------
    // 创建线程
    /*
    NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(newThread:) object:@"test"];
    // 设置此线程的名字
    thread.name = @"thread - 2";
    NSLog(@"1.thread = %@", thread);
    
    // 启动线程
    [thread start];
    */
    
    // ----------------------- 2. NSThread ------------------------
    // 创建线程对象，并且启动此线程
    // 此种方法使用简单，但是无法获取新创建的线程对象
//    [NSThread detachNewThreadSelector:@selector(newThread:) toTarget:self withObject:nil];
    
    
    // ------------------------ 3.performSelectorInBackground: -----------
    // 创建线程，并且启动此线程调用 self 对象的 newThread: 方法
    [self performSelectorInBackground:@selector(newThread:) withObject:nil];
    
    for (int i=0; i<50; i++) {
        NSLog(@"主线程 : %d", i);
    }

}

// 线程的入口方法：线程第一个执行的方法
- (void)newThread:(NSString *)string
{
    // 1.取得当前的线程对象
    NSThread *thread = [NSThread currentThread];
    NSLog(@"2.thread = %@", thread);
    
    for (int i=0; i<50; i++) {
        
//        if (i % 10 == 0) {
//            NSLog(@"sleep...");
//            
//            // sleepForTimeInterval: 设置当前线程睡眠一段时间
//            [NSThread sleepForTimeInterval:2];
//        }
//        
//        if (i == 25) {
//            // 线程退出
//            [NSThread exit];
//        }
        
        
        NSLog(@"多线程 : %d", i);
        
        
    }
    
    BOOL isMain = [NSThread isMainThread];
    if (isMain == NO) {
        NSLog(@"不是主线程");
    }

}

@end
